import tool.TreeNode;
import tool.TreeNodePrint;
import tool.input;

/**
 * @Description: 验证二叉搜索树
 * 给你一个二叉树的根节点 root ，
 * 判断其是否是一个有效的二叉搜索树。
 * 有效 二叉搜索树定义如下：
 * <p>
 * 节点的左子树只包含 小于 当前节点的数。
 * 节点的右子树只包含 大于 当前节点的数。
 * 所有左子树和右子树自身必须也是二叉搜索树。
 * @Date:Create in 21:17  2022/8/2
 */
public class isValidBST0098 {
    TreeNode max;
    public static void main(String[] args) {
//        String s1 = "[5,4,6,null,null,3,7]";
//        TreeNode root1 = input.getTree(s1);
//        TreeNodePrint.printTree(root1);
//        System.out.println(isValidBST(root1));

    }

    public boolean isValidBST(TreeNode root) {
        if (root == null) return true;
        // 左
        boolean left = isValidBST(root.left);
        if (!left) {
            return false;
        }
        // 中
        if (max != null && root.val <= max.val) {
            return false;
        }
        max = root;
        boolean right = isValidBST(root.right);

        return right;
    }
}
